#ifndef TestMatchers_H_
#define TestMatchers_H_
//OpenCV
#include "cv.h"
#include "highgui.h"
#include "myutils.h"
#include <string>
#include <iostream>
#include <stdio.h>

#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/registration/icp.h>
#include <pcl/filters/passthrough.h>
#include <Eigen/Core>

#include "FrameMatcher.h"
#include "BasicIcpMatcher.h"
#include "SurfIcpMatcherI.h"
#include "SurfIcpMatcherII.h"
#include "SurfRansacMatcherI.h"
#include "RGBDCamera.h"
#include "myutils.h"
#include "Map.h"


using namespace std;

class MatcherStatistics {
	public:
		string name;
		double time_consumption;
		int executions;
		int correct_matches;
		int possible_matches;
		int incorrect_matches;
		void print();
		void update(Transformation * ideal, Transformation * found, double time);
};

class TestMatchers
{
	public:
		RGBDCamera * camera;
		void test();
		Transformation * scramble(FrameNode * src_node, FrameNode * dst_node);
		FrameMatcher ** matchers;
		MatcherStatistics ** statistics;
		int nr_matchers;
		TestMatchers(RGBDCamera * camera);
		~TestMatchers();
};

#endif
